RequestSlaveState
请求 EtherCAT 从站进入指定的 EtherCAT 状态。例如,若状态为 Op,而所请求的状态为 PreOp,则从站状态将会变更为 Op -> SafeOp -> PreOp;若状态为 Init,而所请求的状态为 Op,则从站状态将会变更为 Init -> PreOp -> SafeOp -> Op。
语法
KsCommandStatus RequestSlaveState(
int SlaveId,
EthercatState State
);
参数
SlaveId:从站阵列的索引。当 EtherCAT 从站装置启动时,此索引具有与 SlaveId 相同的值,该值对应于从站装置在网路中的位置。请注意,在 EtherCAT 进入运行 (Op) 状态后,加入或移除网路上的任何从站装置将改变各装置在网路中的位置 (SlaveId)。尽管如此,从站的索引将保持不变。新增的装置将排列在阵列的末端。对于更改后的所有从站,索引和 SlaveId 将不再匹配。上述行为模式仅适用于实体装置;不适用于模拟装置。详细资讯请参阅 EnableHotConnect 中的使用案例。
State:请求的 EtherCAT 状态。请见 EthercatState 类型。
回传值
回传 KsCommandStatus 结构。
备注
- EtherCAT 主站与从站皆需处在支援的状态中。
- 欲请求的 EtherCAT 状态不得高于主站状态。更多关于主站支援的状态资讯请见 RequestState。
可用的 EtherCAT 状态
ecatInit, ecatBoot, ecatPreOP, ecatSafeOP, ecatOP
范例
复制
SlaveStatus sStatus = { 0 };
nRet = GetSlaveById(0, &sStatus);
if (nRet == errNoError)
{
if (sStatus.State != ecatOffline) {
// You can follow the EtherCAT state diagram, or just enter the desired state.
// Switch to Init
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatInit));
// Operate the slave in Init state
// Switch to Bootstrap
WaitForCommand(3, TRUE, RequestSlaveState(0, ecatBoot));
// Operate the slave in Bootstrap state
// Switch back to original state
WaitForCommand(3, TRUE, RequestSlaveState(0, sStatus.State));
}
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
标头档 | ksapi.h | ksapi.h |
程式库 | KsApi_Rtss.lib | KsApi.lib |
参见